Application customization using a customization file

ABSTRACT

Techniques and systems for receiving and using a customization file are provided, including a computing device, a method, or a computer-program product. For example, a method may include receiving a customization file that includes customized content for customizing a communication interface overlay. The method may further include accessing native application code and executing the native application code to run a native application. The method may further include accessing a compiled set of code that is separate from the native application code. The compiled set of code is accessible by the native application code. The method may further include executing the compiled set of code, wherein a default file of the compiled set of code provides a native communication interface overlay, wherein the native communication interface overlay is overlaid over a graphical interface of the native application, and wherein the native communication interface overlay allows communication with a resource of a third-party. The method may further include executing the received customization file, wherein executing the received customization file customizes the compiled set of code, and wherein the customized compiled set of code customizes the native communication interface overlay to provide a customized communication interface overlay.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/586,690 filed Dec. 30, 2014 which is a continuation of U.S.application Ser. No. 14/586,600, filed Dec. 30, 2014, now issued as U.S.Pat. No. 9,191,492. The subject matter of all of the foregoing patentapplications is incorporated herein by reference in its entirety, forall purposes.

FIELD

The present disclosure relates generally to customizing an application.For example, various techniques and systems are provided for using acustomization file to customize an application program.

SUMMARY

Certain aspects and features of the present disclosure relate todeflecting certain types of communications. In some examples,interactions with a graphical interface of an application may bedetected along with a configuration state of the graphical interfacewhen the interactions are made. In some embodiments, one or more metricsmay be gathered and analyzed to determine communications trafficpatterns that are attributable to different configurations of thegraphical interface.

In some examples, a customized communication interface overlay may bedisplayed over a graphical interface (e.g., of a website or a computerapplication). For example, a specifically customized file may betransmitted to a computing device. The specifically customized file mayalso be referred to herein as a customization file or a customizationoverlay file. The customization file may be executed by the computingdevice to customize a native communication interface overlay.

According to at least one example of facilitating deflection ofcommunications, a computing device may be provided that includes one ormore data processors. The computing device further includes anon-transitory machine-readable storage medium containing instructionswhich when executed on the one or more data processors, cause the one ormore processors to perform operations including: displaying a graphicalinterface corresponding to a mobile application, wherein the graphicalinterface includes a selectable phone communication link or a selectablechat link, wherein selection of the selectable phone communication linkfacilitates a telephone communication with a live resource, and whereinselection of the selectable chat link facilitates a chat communicationwith a live chat resource; receiving input corresponding to anindication of placement of a telephone call from the mobile application,wherein the selectable phone communication link is used to place thetelephone call; determining a state of the selectable chat link when theselectable phone communication link was used to place the telephone callfrom the mobile application; and reporting a communication, wherein thecommunication includes data indicating placement of the telephone calland the state of the selectable chat link when the selectable phonecommunication link was selected.

In some embodiments, a computer-implemented method may be provided thatincludes displaying, using a computing device, a graphical interfacecorresponding to a mobile application, wherein the graphical interfaceincludes a selectable phone communication link or a selectable chatlink, wherein selection of the selectable phone communication linkfacilitates a telephone communication with a live resource, and whereinselection of the selectable chat link facilitates a chat communicationwith a live chat resource. The method further includes receiving inputcorresponding to an indication of placement of a telephone call from themobile application, wherein the selectable phone communication link isused to place the telephone call. The method further includesdetermining a state of the selectable chat link when the selectablephone communication link was used to place the telephone call from themobile application and reporting a communication, wherein thecommunication includes data indicating placement of the telephone calland the state of the selectable chat link when the selectable phonecommunication link was selected.

In some embodiments, a computer-program product tangibly embodied in anon-transitory machine-readable storage medium of a computing device maybe provided. The computer-program product may include instructionsconfigured to cause one or more data processors to: display a graphicalinterface corresponding to a mobile application, wherein the graphicalinterface includes a selectable phone communication link or a selectablechat link, wherein selection of the selectable phone communication linkfacilitates a telephone communication with a live resource, and whereinselection of the selectable chat link facilitates a chat communicationwith a live chat resource; receive input corresponding to an indicationof placement of a telephone call from the mobile application, whereinthe selectable phone communication link is used to place the telephonecall; determine a state of the selectable chat link when the selectablephone communication link was used to place the telephone call from themobile application; and report a communication, wherein thecommunication includes data indicating placement of the telephone calland the state of the selectable chat link when the selectable phonecommunication link was selected.

In some embodiments, the state of the selectable chat link includespresent in the graphical interface or not present in the graphicalinterface.

In some embodiments, the method, computing device, and computer-programproduct described above for facilitating deflection of communicationsmay further include determining a percentage of call deflections as aresult of the selectable chat link, wherein the percentage of calldeflections is determined based on a first percentage of selections ofselectable phone communication links when the selectable chat link is ina first state, and a second percentage of selections of the selectablephone communication links when the selectable chat link is in a secondstate.

In some embodiments, the method, computing device, and computer-programproduct may include receiving input corresponding to an indication ofplacement of a chat communication from the mobile application,determining that the selectable chat link was selected to place the chatcommunication, and reporting a second communication, wherein the secondcommunication includes data indicating placement of the chatcommunication.

In some embodiments, the method, computing device, and computer-programproduct include determining that the selectable phone communication linkwas used to place the telephone call based on the placement of thetelephone call occurring from the mobile application.

In some embodiments, the live chat resource includes particularinformation about a subject corresponding to the mobile application, andwherein a provider of the live chat resource is different from aprovider of the mobile application.

In some embodiments, the method, computing device, and computer-programproduct include reporting a length of time of the telephone call.

According to at least one example of customizing a communicationinterface overlay, a computing device may be provided that includes oneor more data processors, and a receiver configured to receive acustomization file, wherein the customization file includes customizedcontent for customizing a communication interface overlay. The computingdevice further includes a non-transitory machine-readable storage mediumcontaining instructions which when executed on the one or more dataprocessors, cause the one or more processors to perform operationsincluding accessing native application code; executing the nativeapplication code to run a native application; accessing a compiled setof code, wherein the compiled set of code is separate from the nativeapplication code, and wherein the compiled set of code is accessible bythe native application code; executing the compiled set of code, whereina default file of the compiled set of code provides a nativecommunication interface overlay, wherein the native communicationinterface overlay is overlaid over a graphical interface of the nativeapplication upon execution of the compiled set of code, and wherein thenative communication interface overlay facilitates communication with aresource of a third-party; and executing the received customizationfile, wherein executing the received customization file customizes thecompiled set of code, and wherein the customized compiled set of codecustomizes the native communication interface overlay to provide acustomized communication interface overlay.

In some embodiments, a computer-implemented method may be provided thatincludes receiving, on a computing device, a customization file, whereinthe customization file includes customized content for customizing acommunication interface overlay. The method further includes accessingnative application code and executing the native application code to runa native application. The method further includes accessing a compiledset of code, wherein the compiled set of code is separate from thenative application code, and wherein the compiled set of code isaccessible by the native application code, and executing the compiledset of code, wherein a default file of the compiled set of code providesa native communication interface overlay, wherein the nativecommunication interface overlay is overlaid over a graphical interfaceof the native application, and wherein the native communicationinterface overlay facilitates communication with a resource of athird-party. The method further includes executing the receivedcustomization file, wherein executing the received customization filecustomizes the compiled set of code, and wherein the customized compiledset of code customizes the native communication interface overlay toprovide a customized communication interface overlay.

In some embodiments, a computer-program product tangibly embodied in anon-transitory machine-readable storage medium of a computing device maybe provided. The computer-program product may include instructionsconfigured to cause one or more data processors to: receive acustomization file, wherein the customization file includes customizedcontent for customizing a communication interface overlay; access nativeapplication code; execute the native application code to run a nativeapplication; access a compiled set of code, wherein the compiled set ofcode is separate from the native application code, and wherein thecompiled set of code is accessible by the native application code;execute the compiled set of code, wherein a default file of the compiledset of code provides a native communication interface overlay, whereinthe native communication interface overlay is overlaid over a graphicalinterface of the native application, and wherein the nativecommunication interface overlay facilitates communication with aresource of a third-party; and execute the received customization file,wherein executing the received customization file customizes thecompiled set of code, and wherein the customized compiled set of codecustomizes the native communication interface overlay to provide acustomized communication interface overlay.

In some embodiments, the method, computing device, and computer-programproduct described above for customizing a communication interfaceoverlay may further include accessing the default file, wherein thedefault file is included in the compiled set of code, determiningwhether the received customization file is different than the defaultfile, and replacing the default file with the received customizationfile when the received customization file is different than the defaultfile.

In some embodiments, the compiled set of code includes a stand-alonelibrary. In some embodiments, the compiled set of code is accessed andexecuted and the customization file is executed when the nativeapplication code is provided by a particular client and the compiled setof code and the customization file are provided by the third-party. Insuch embodiments, the native application code is provided by theparticular client, and the compiled set of code and the customizationfile are provided by the third-party.

In some embodiments, the resource of the third-party includes particularinformation about a subject. In some embodiments, the customizedcommunication interface overlay facilitates communication between acustomer of a particular client and the resource of the third-party. Insome embodiments, the customized communication interface overlayincludes an interactive chat window.

This summary is not intended to identify key or essential features ofthe claimed subject matter, nor is it intended to be used in isolationto determine the scope of the claimed subject matter. The subject mattershould be understood by reference to appropriate portions of the entirespecification of this patent, any or all drawings, and each claim.

The foregoing, together with other features and embodiments, will becomemore apparent upon referring to the following specification, claims, andaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

Illustrative embodiments of the present invention are described indetail below with reference to the following drawing figures:

FIG. 1 is a block diagram of an environment according to one embodiment.

FIG. 2 is a block diagram of an environment including a devicedisplaying a communication interface overlay according to oneembodiment.

FIG. 3 is a block diagram of an environment including a devicedisplaying a customized communication interface overlay according to oneembodiment.

FIG. 4 is a depiction of a settings screen displayable on a computingdevice according to one embodiment.

FIG. 5 is a depiction of a settings screen displayable on a computingdevice according to one embodiment.

FIG. 6 is a depiction of a settings screen displayable on a computingdevice according to one embodiment.

FIG. 7 is a depiction of a settings screen displayable on a computingdevice according to one embodiment.

FIG. 8 is a depiction of a settings screen displayable on a computingdevice according to one embodiment.

FIG. 9 is a depiction of a demonstration screen with a graphicalinterface and a communication interface overlay tab displayable on acomputing device according to one embodiment.

FIG. 10 is a depiction of a demonstration screen with a graphicalinterface and a communication interface overlay tab displayable on acomputing device according to one embodiment.

FIG. 11 is a depiction of a screen with a pre-chat survey windowdisplayable on a computing device according to one embodiment.

FIG. 12 is a depiction of a screen with a name entry window displayableon a computing device according to one embodiment.

FIG. 13 is a depiction of a screen with a communication interfaceoverlay displayable on a computing device according to one embodiment.

FIG. 14 is a depiction of a demonstration screen with a communicationinterface overlay and a function bar displayable on a computing deviceaccording to one embodiment.

FIG. 15 is a flowchart illustrating an embodiment of a process ofcustomizing a communication interface overlay.

FIG. 16 is a block diagram of an environment including a deviceaccording to one embodiment.

FIG. 17 is a block diagram of an environment including a deviceaccording to one embodiment.

FIG. 18 is a block diagram of an environment including a deviceaccording to one embodiment.

FIG. 19 is a block diagram of an environment including a deviceaccording to one embodiment.

FIG. 20 is a flowchart illustrating an embodiment of a process ofcustomizing a communication interface overlay.

FIG. 21 illustrates an example of a computing device according to oneembodiment.

FIG. 22 illustrates an example of a server, such as a web server or acode server, according to one embodiment.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, specificdetails are set forth in order to provide a thorough understanding ofembodiments of the invention. However, it will be apparent that variousembodiments may be practiced without these specific details. The figuresand description are not intended to be restrictive.

The ensuing description provides exemplary embodiments only, and is notintended to limit the scope, applicability, or configuration of thedisclosure. Rather, the ensuing description of the exemplary embodimentswill provide those skilled in the art with an enabling description forimplementing an exemplary embodiment. It should be understood thatvarious changes may be made in the function and arrangement of elementswithout departing from the spirit and scope of the invention as setforth in the appended claims.

Specific details are given in the following description to provide athorough understanding of the embodiments. However, it will beunderstood by one of ordinary skill in the art that the embodiments maybe practiced without these specific details. For example, circuits,systems, networks, processes, and other components may be shown ascomponents in block diagram form in order not to obscure the embodimentsin unnecessary detail. In other instances, well-known circuits,processes, algorithms, structures, and techniques may be shown withoutunnecessary detail in order to avoid obscuring the embodiments.

Also, it is noted that individual embodiments may be described as aprocess which is depicted as a flowchart, a flow diagram, a data flowdiagram, a structure diagram, or a block diagram. Although a flowchartmay describe the operations as a sequential process, many of theoperations can be performed in parallel or concurrently. In addition,the order of the operations may be re-arranged. A process is terminatedwhen its operations are completed, but could have additional steps notincluded in a figure. A process may correspond to a method, a function,a procedure, a subroutine, a subprogram, etc. When a process correspondsto a function, its termination can correspond to a return of thefunction to the calling function or the main function.

The term “machine-readable storage medium” or “computer-readable storagemedium” includes, but is not limited to, portable or non-portablestorage devices, optical storage devices, and various other mediumscapable of storing, containing, or carrying instruction(s) and/or data.A machine-readable storage medium or computer-readable storage mediummay include a non-transitory medium in which data can be stored and thatdoes not include carrier waves and/or transitory electronic signalspropagating wirelessly or over wired connections. Examples of anon-transitory medium may include, but are not limited to, a magneticdisk or tape, optical storage media such as compact disk (CD) or digitalversatile disk (DVD), flash memory, memory or memory devices. Acomputer-program product may include code and/or machine-executableinstructions that may represent a procedure, a function, a subprogram, aprogram, a routine, a subroutine, a module, a software package, a class,or any combination of instructions, data structures, or programstatements. A code segment may be coupled to another code segment or ahardware circuit by passing and/or receiving information, data,arguments, parameters, or memory contents. Information, arguments,parameters, data, etc. may be passed, forwarded, or transmitted usingany suitable means including memory sharing, message passing, tokenpassing, network transmission, etc.

Furthermore, embodiments may be implemented by hardware, software,firmware, middleware, microcode, hardware description languages, or anycombination thereof. When implemented in software, firmware, middlewareor microcode, the program code or code segments to perform the necessarytasks (e.g., a computer-program product) may be stored in amachine-readable medium. A processor(s) may perform the necessary tasks.

Systems depicted in some of the figures may be provided in variousconfigurations. In some embodiments, the systems may be configured as adistributed system where one or more components of the system aredistributed across one or more networks in a cloud computing system.

Certain aspects and features of the present disclosure relate todeflecting certain types of communications. For example, a third-partyservice provider may provide customer service, technical support, salessupport, or other third-party services to a client of the third-partyservice provider. The client or the third-party service provider maydesire that the client's customers contact support resources using onecommunication type over another communication type. For example, theclient may prefer that the customers use a chat communication optionover a telephone communication option. As used herein, a resource mayinclude a customer service representative, a technical supportrepresentative, a sales representative, or other resources that areknowledgeable about a particular client's products or services. Theresource may include a live person who has knowledge about products orservices, an automated system, a combination of live human and automatedsystem support, or the like. As used herein, a live resource or livechat resource includes a human resource that is able to communicate witha customer using telephonic communications or chat communications,respectively. In some examples, interactions with a graphical interfaceof a computer application (e.g., provided by the client, provided by thethird-party service provider, or provided by another applicationprovider) may be detected along with a configuration state of thegraphical interface when the interactions are made. One or more metricsmay be gathered and analyzed to determine communications trafficpatterns that are attributable to different configurations of thegraphical interface.

In some examples, a customized communication interface overlay may beprovided for display over a graphical interface of a website or acomputer application. The customized communication interface overlayfacilitates communication with a resource of a third-party, such as acustomer service representative, a technical support representative, asales representative, or other resources who are knowledgeable about aproduct or service. For example, a specifically customized file, or acustomization file, may be transmitted to a computing device. Thecustomization file may be executed by the computing device to customizea native communication interface overlay. In order to facilitatecommunication deflections, user interactions with the customizedcommunication interface overlay may be detected along with aconfiguration state of the graphical interface when the interactions aremade. Various details relating to examples of customized communicationinterface overlays and deflection of certain communications aredescribed below with respect to the drawings.

These illustrative examples are given to introduce the general subjectmatter discussed herein, and are not intended to limit the scope of thedisclosed concepts. The following sections describe various features andexamples with reference to the drawings, in which descriptions are usedto describe the illustrative examples but, like the illustrativeexamples, should not be used to limit the present disclosure.

FIG. 1 is a block diagram of an environment 100 according to oneembodiment. The environment 100 includes a device 106. The device 106may include a computing device, such as a mobile device, a desktopcomputer, a laptop computer, a tablet computer, a wearable electronicdevice, or any other suitable computing device. The device 106 mayexecute native application code to run a native application 128. In someembodiments, the native application 128 may include a mobile application130. The mobile application code may be specifically written for theparticular mobile application and may be specific to the platform oroperating system of the device 106. The device 106 may execute mobileapplication code to run the mobile application 130 and display contentof the native application 128. The mobile application 130 may bereceived or downloaded from a mobile application store 104, and may bestored on the device 106. The mobile application 130 may be received ordownloaded from the mobile application store 104 over connection 118. Insome embodiments, the native application 128 may include one or morewebpages, such as a webpage 112. The device 106 may include a webbrowser (e.g., Microsoft Explorer™, Firefox™, Google Chrome™, or othersuitable web browser) that can execute a markup language file (e.g., ahyper-text markup language (HTML) file, or other type of markup languagefile) to run the webpage 112 and display content of the webpage 112. Insome embodiments, the web browser may execute a client-side scriptinglanguage (e.g., Javascript or other suitable client-side scriptinglanguage) that allows the web browser to execute webpages and otherclient-side scripts. The webpage 112 may be received or downloaded fromthe web server 102 over connection 116. Connections 116 and 118 may bewired or wireless connections using a wired network (e.g., fiber,ethernet, powerline ethernet, ethernet over coaxial cable, digitalsignal line (DSL), or the like), wireless network (e.g., Zigbee™,Bluetooth™, WiFi™, IR, UWB, WiFi-Direct, BLE, cellular, Long-TermEvolution (LTE), WiMax™, or the like), or a combination of a wired and awireless network. While only one mobile application store 104 and oneweb server 102 are shown in FIG. 1, one of ordinary skill in the artwill appreciate that more than one mobile application store or webserver may provide applications or web content.

The native application 128 may include a graphical interface 126 thatcan be displayed on the device 106. In some embodiments, the graphicalinterface 126 may be displayed upon execution of a compiled set of code134. For example, the compiled set of code 134 may be a set of programcode that is separate from the native application code of the nativeapplication 128. One example of a compiled set of code includes astand-alone library that can be accessed and used by other programs. Thelibrary code can be organized so that it can be used by differentprograms that have no connection to each other, whereas code that ispart of a program is organized to be used within that one program. Insuch embodiments, the native application code may access the compiledset of code 134 to implement the graphical interface 126. For example,the compiled set of code 134 may be inserted or incorporated into thenative application code. The native application 128 may launch and closethe compiled set of code 134 as needed, and may send and receivecommands to and from the compiled set of code 134. The compiled set ofcode 134 may provide further functionality, such as communicationdeflection analysis and reporting, as discussed further below. In someembodiments, the compiled set of code 134 may be provided or developedby a third-party service provider, and the native application 128 may beprovided or developed by a client of the third-party service provider.For example, the third-party service provider may provide customerservice, technical support, sales support, or other third-party servicesto the client. The compiled set of code 134 provided by the third-partyservice provider may provide the third-party services to the nativeapplication 128 of the client. The third-party service provider maymaintain one or more servers, such as a third-party server 108. In someembodiments, the third-party server 108 provides the compiled set ofcode 134 to the device 106 over connection 120. Connection 120 mayinclude a wired or wireless connection. In some embodiments, thecompiled set of code is downloaded to the device 106 along with thenative application 128 (e.g., from web server 102, mobile applicationstore 104, or the like). In some embodiments, code for implementing thegraphical interface 126 may be included in the native application codeof the native application 128 itself instead of being separate from thenative application code.

A communication interface overlay tab 124 may also be displayed with thegraphical interface 126. The communication interface overlay tab 124 maybe interactive and may run live along with the native application 128and compiled set of code 134 on the device 106. In some embodiments, thecommunication interface overlay tab 124 may become visible to a useronly after a specific user input is received through an input device ofthe device 106, such as a specific key combination on a keypad orkeyboard of the device 106, a specific swiping movement or multi-touchinput on a touchscreen or touchpad of the device 106, or other specificuser input. A user may select the communication interface overlay tab124 in order to display a communication interface overlay (not shown).For example, upon selection of the communication interface overlay tab124 by a user, the communication interface overlay may be displayed. Insome embodiments, the communication interface overlay tab 124 and thecorresponding communication interface overlay can be presented as anactual overlay displayed over the graphical interface 126. In someembodiments, the communication interface overlay tab 124 and thecorresponding communication interface overlay can be presented near oraround the graphical interface 126 (e.g., the graphical interface 126may be shrunk and displayed next to, above, or below the communicationinterface overlay or the tab 124).

In some embodiments, the native application 128 may present a user withan option to choose either a web version or a native application versionof the native application 128. For example, the option may be displayedwhen the native application 128 is loaded. In another example, theoption may be displayed in response to a selection of a settings optionthat allows a user to adjust settings of the native application 128. Inthe event a web version is selected, the native application 128 canselect a version of the overlay element that is written in codeexecutable from within a web browser. In the event a user selects thenative application version, the native application 128 can selectversion of the overlay element written in native application code.

In an embodiment, the communication interface overlay facilitatescommunication with a resource of a third-party, such as the third-partyservice provider described above. For example, the communicationinterface overlay may facilitate communication between the third-partyresource and a customer of the client of the third-party. In such anexample, the third-party service provider may provide customer support(e.g., technical support, sales support, or other type of customersupport) to customers of the client. To facilitate communication withthe resource of the third-party, the communication interface overlay mayinclude an interactive chat window through which the customer cancommunicate with the resource. The resource may communicate with thecustomer using the information resource receiver 110 over connection122. Connection 122 may include a wired or wireless connection. Thecommunication interface overlay may include one or more interfaceelements, such as text boxes, chat bubbles, or the like. The interfaceelements may display communications with the resource. The resource ofthe third-party may include a live human operating the informationresource receiver 110. The live operator can be an individual providedby the company supplying the overlay element (e.g., the third-partyservice provider), can be an individual provided by the company runningthe website or mobile application (e.g., a client of the third-partyservice provider), or another company or individual. Upon initiating aproper command (e.g., clicking, tapping, or otherwise selecting thecommunication interface overlay tab 124), the device 106 can establishthe connection 122 with the chat receiver 110. In some embodiments, thenative application 128 can establish a chat connection 122 with a chatreceiver 110 associated with the customer. In some embodiments, thenative application 128 can establish a chat connection 122 with a chatreceiver 110 associated with the third-party service provider.

In some embodiments, the communication interface overlay tab 124 and thecorresponding communication interface overlay may be implemented anddisplayed upon execution of the compiled set of code 134 by the device106. For example, the compiled set of code 134 may include an overlayfile 114 that is used to implement the communication interface overlaytab 124. The overlay file 114 may control the functionality andappearance of the communication interface overlay tab 124 and thecorresponding communication interface overlay that is running in thenative application 128. The overlay file 114 may include a JavaScriptObject Notation (JSON) file, an extensible markup language (XML) file, aYAML file, or any other appropriate type of data file. The overlay file114 may include a default file that is provided with the compiled set ofcode 134 to all client applications that use the compiled set of code134 to implement their graphical interface. The default file may providea generic native communication interface overlay for display over aportion of or the entire graphical interface 126. In some embodiments, acustomization file may be customized for a specific client of thethird-party service provider. The customization file may includecustomized content for customizing the communication interface overlayto provide a customized communication interface overlay. For example, aclient may customize their communication interface overlay byspecifically choosing customized values for specific sections of thecustomization file corresponding to different features of thecommunication interface overlay. The customization file may include aJSON file, XML file, YAML file, or other appropriate type of data file.The third-party server 108 may transmit the customization file to thedevice 106. Upon receiving the customization file, the device 106 mayaccess the default file that is included in the compiled set of code134. The device 106 may determine whether the received customizationfile is different than the default file in order to decide whether toreplace the default file with the customization file. In someembodiments, the device 106 may have previously received anothercustomization file. In such embodiments, the device 106 may determinewhether the most recently received customization file is different thanthe previously received customization file. In the event the device 106determines that the customization file is different than the defaultfile or previously received customization file, the device 106 mayreplace the default file or previously received customization file withthe received customization file.

In some embodiments, the device 106 can establish the connection 120with the third-party server 108. The third-party server 108 may supportthe operation of the communication interface overlay tab 124 and thecorresponding communication interface overlay. In one example, thethird-party server 108 may provide information indicating a particularchat receiver 110 to contact when the communication interface overlay isutilized by the user. For example, the third-party server 108 may keeprecords of available resources (e.g., including location, availability,expertise, language proficiency, and/or any other relevant information).The third-party server 108 may route the communication to a particularchat receiver 110 based on the records. In some examples, thethird-party server 108 may send an address of the appropriateinformation resource receiver 110 for the native application 128 tocontact. In some embodiments, the native application 128 can providecustomer identification information (e.g., a number or a name particularto the customer) to the third-party server 108. The customer informationmay be used by the third-party server 108 to provide settingsinformation to the device 106. The settings information may be used todetermine which third-party resource to contact. For example, a clientidentification number stored on the device 106 can be transmitted to thethird-party server 108. The third-party server 108 can return an addressof the information resource receiver 110 to contact. The nativeapplication 128 can then cause the communication interface overlay toinitiate a chat connection 122 with the chat receiver 110 based on theaddress provided by the third-party server 108.

It should be appreciated that the environment 100 may have othercomponents than those depicted. Further, the embodiment shown in thefigure is only one example of an environment that may incorporate anembodiment of the invention. In some other embodiments, the environment100 may have more or fewer components than shown in the figure, maycombine two or more components, or may have a different configuration orarrangement of components.

FIG. 2 is a block diagram illustrating an environment 200 including adevice 202 that may receive and execute one or more customization files,according to one embodiment. The device 202 can use the customizationfile to customize a communication interface overlay operating on thedevice 202. The device 202 may be similar to the device 106 shown inFIG. 1, and may include a computing device. For example, the device 202may include a mobile computing device, such as a mobile telephone orsmartphone, a tablet computer, a laptop computer, or any other suitablecomputing device. As another example, the device 202 may include adesktop computer.

The device 202 may execute native application code to run a nativeapplication 228. The native application 228 may be similar to the nativeapplication 128 described above with respect to FIG. 1. For example, thenative application 228 may include a mobile application or a webpage.The native application code for native application 228 may be providedto the device 202 by a mobile application server (not shown), by a webserver (not shown), or other resource of computer applications.

The native application 228 may have access to a compiled set of code(not shown). Upon executing the compiled set of code using the nativeapplication 228, the device 202 can display the graphical interface 224.The compiled set of code may be similar to the compiled set of code 134described with respect to FIG. 1. In some embodiments, the compiled setof code may be provided or developed by a third-party service provider,and the native application 228 may be provided or developed by a clientof the third-party service provider. The third-party service providermay operate the third-party server 218. One of ordinary skill in the artwill appreciate that the third-party service provider may operatemultiple servers. In some embodiments, the third-party server 218provides the compiled set of code to the device 202 over connection 216.In some embodiments, the compiled set of code is downloaded to thedevice 202 along with the native application 228 (e.g., from a mobileapplication server, web server, or the like).

A communication interface overlay tab 204 may be displayed along withthe graphical interface 224. The communication interface overlay tab 204may be similar to the communication interface overlay tab 124 displayedin FIG. 1. A user may select the communication interface overlay tab 204in order to display a communication interface overlay 210, similar tothat described above with respect to FIG. 1. The communication interfaceoverlay 210 and the communication interface overlay tab 204 are shown inFIG. 2 as an actual overlay displayed over the graphical interface 224.In some embodiments, the communication interface overlay 210 and thecommunication interface overlay tab 204 can be presented near or aroundthe graphical interface 224.

The communication interface overlay 210 facilitates communication with aresource of a third-party, such as the third-party service providerdescribed above. For example, the communication interface overlay 210may facilitate a chat communication between a live chat resource and acustomer of a client of the third-party. The resource may send a message208 to the native application 228. A user of the device 202 may enter amessage into input box 214 and press a send button 220 to send a messageto the resource. The resource may communicate with the customer using aninformation resource receiver, such as the information resource receiver110 displayed in FIG. 1. The resource of the third-party may include alive human operating the information resource receiver.

The communication interface overlay tab 204 and the communicationinterface overlay 210 may be displayed and operated upon execution ofthe compiled set of code using the default application 228. The compiledset of code may include a default overlay file by default. The defaultoverlay file is executed to implement the communication interfaceoverlay tab 204 and communication interface overlay 210. The overlayfile controls the functionality and appearance of the communicationinterface overlay tab 204 and the corresponding communication interfaceoverlay 210. The overlay file may be similar to the overlay file 114described with respect of FIG. 1, and may include a JSON file, an XMLfile, a YAML file, or any other appropriate type of data file. Thedefault overlay file is provided with the compiled set of code to allclient applications that use the compiled set of code to implement theirgraphical interface. The default file may provide a generic nativecommunication interface overlay for display over a portion of or theentire graphical interface 224.

As described above with respect to FIG. 1, a customization file may becustomized for a specific client of the third-party service provider.The third-party server 218 may maintain a customization overlay filedatabase 206 that includes customization files for various clients ofthe third-party service provider. The different customization files inthe customization overlay file database 206 may include customizedcontent for customizing the clients' communication interface overlays toprovide a customized communication interface overlay experience that isspecific to each of the clients. The customization file may also includea JSON file, XML file, YAML file, or other appropriate type of datafile. The third-party server 218 may be in communication with the nativeapplication 228 and/or the compiled set of code to determine whether theclient who owns the native application 228 has a customization overlayfile in the customization overlay file database 206. If the client has acustomization overlay file, the third-party server 218 may retrieve thecustomization overlay file from the database 206, and may transmit thecustomization file to the device 202 over connection 216. The connection216 may include wired or wireless connection. In some embodiments, thethird-party server 218 may transmit the most recent customization fileto the mobile application store and/or a web server that allow customersto download native applications that access the compiled set of codewith the overlay file. In such embodiments, the device 202 may receivethe customization overlay file from the mobile application store or fromthe web server.

Upon receiving the customization file, the device 202 (e.g., using thenative application 228, the compiled set of code, a combination thereof,or another program) may retrieve the current overlay file that isincluded in the compiled set of code. The current overlay file mayinclude the default overlay, or may include a previously receivedcustomization overlay file. The device 202 may determine whether thereceived customization file is different than the default file or apreviously received customization file in order to decide whether toreplace the default file or previously received customization file withthe newly received customization file. The device 202 may then replacethe default file or previously received customization file with thereceived customization file when it is determined that the newlyreceived customization file is different.

FIG. 3 illustrates the device 202 with a customized communicationinterface overlay 310. The customized communication interface overlay310 may be displayed as the device 202 executes the customizable overlayfile of the compiled set of code using the native application. In someexamples, a client of the third-party service provider may customize thecommunication interface overlay 210 to create the customizedcommunication interface overlay 310 by specifying parameters of thecustomizable overlay file. For example, the client may specificallychoose customized parameter values for specific sections of thecustomization overlay file that correspond to different features andfunctions of the customized communication interface overlay 310. In oneexample, the client may select or otherwise indicate different values ofa JSON or XML file that correspond to different features and functionsof the customized communication interface overlay 310. For example, theclient may designate the values so that the customized communicationinterface overlay 310 includes customized message boxes 308 and 312, acustomized logo 302, a customized input box 314, and a customized sendbutton 320. One of ordinary skill in the art will appreciate that othercustomized features and functions may be provided in the customizedcommunication interface overlay 310. In some embodiments, the client maysend the desired features and functions to the third-party serviceprovider so that the service provider can create the customizationoverlay file. In some embodiments, the client can create thecustomization overlay file. Once the customization overlay file iscreated, it can be stored in the customization overlay file database206. The third-party server 218 can then send the customization overlayfile to the device 202 so that the native application 224 can implementthe customized communication interface overlay 310. In some embodiments,the third-party server 218 may transmit the customization overlay fileto a mobile application store or a web server that provide for downloadnative applications that access the compiled set of code with theoverlay file.

FIG. 3 further illustrates a customized communication interface overlaytab 304 that is customized according to the customization overlay file.The customized communication interface overlay tab 304 includescustomization 306, which may include any customized feature chosen bythe client, such as a logo, a message, an advertisement, or othercustomized feature.

It should be appreciated that the environment 200 may have othercomponents than those depicted. Further, the embodiment shown in thefigure is only one example of an environment that may incorporate anembodiment of the invention. In some other embodiments, the environment200 may have more or fewer components than shown in the figure, maycombine two or more components, or may have a different configuration orarrangement of components.

FIGS. 4-8 include examples of screenshot illustrations that may appearon a computing device, such as the devices 106 or 202. The screenshotsin FIGS. 4-8 illustrate examples of settings that may be selected by aclient of a third-party service provider to specify different featuresand functions of the communication interface overlay of the client'snative application. For example, upon selecting one or more of thesettings displayed in FIGS. 4-8, a server (e.g., third-party server 108or 218) may update an overlay file to create a customization overlayfile for the client, similar to that described above with respect toFIGS. 1-3. One of ordinary skill in the art will appreciate that theclient may specify features and settings for their communicationinterface overlay using other techniques. For example, the client maycreate the customization overlay file by entering different values inthe actual customization overlay file that correspond to differentfeatures and functions of the communication interface overlay. Asanother example, the client may send a description of desired featuresand functions to the third-party service provider so that the serviceprovider can create the customization overlay file.

FIG. 4 illustrates a settings screen 400 displayable on a computingdevice according to one embodiment. The settings screen 400 can containvarious settings 404, which can correspond to optional settings that aclient can select to customize their communication interface overlay tocontrol how the customized communication interface overlay operates andappears. The settings screen 400 can include a type setting 406,allowing the client to specify whether the communication interfaceoverlay settings being selected apply to a mobile application version ora web version. In some embodiments, changing the mode of implementationcan also effect what settings are displayed on the settings screen 400.The settings screen 400 can include a URL entry box 408. The client canenter the URL of the website to which the applied settings will apply.The settings screen 400 can also include a browser selector 410,allowing the client to select one or more browser types that can be usedto display the customized communication interface overlay. Similarly, inthe event the client selects the “App” type, the settings screen 400 mayinclude a mobile application entry box (not shown) that allows theclient to enter a name of the mobile application to which the appliedsettings will apply. In some embodiments, a separate window may appearthat allows the client to search for the appropriate mobile application,such as a window corresponding to a mobile application store. One ofordinary skill in the art will appreciate that the settings screen 400can include other settings. The settings screen 400 can include a launchbutton 402. When pressed or otherwise selected by the client, the launchbutton 402 can cause a computing device to send the settings to a server(e.g., third-party server 108 or 218) so that the server can create acustomization overlay file. In some embodiments, upon selection of thelaunch button 402, the computing device may load a demonstration screenthat may illustrate an example of the communication interface overlaywith the selected settings implemented. In some embodiments, selectionof the launch button 402 may cause a new settings screen to bedisplayed.

FIG. 5 illustrates another settings screen 500 displayable on thecomputing device according to one embodiment. The settings screen 500may be displayed upon the launch button 402 being pressed on thesettings screen 400. The application settings screen 500 can include agraphical representation selector 504. The client can select one or moreoptions provided by the graphical representation selector 504 toindicate one or more graphical representations that are to be includedin the customized communication interface overlay. For example, theoptions provided by the graphical representation selector 504 mayinclude logos, images, videos, or the like that the client wantsdisplayed in the customized communication interface overlay. Asillustrated in FIG. 5, the graphical representation selector 504 showsthree selected graphical representations 506 and two non-selectedgraphical representations 508. In some embodiments, the graphicalrepresentations available to be selected can be obtained from theclient. For example, the client may upload the graphicalrepresentations. The application settings screen 500 can include varioussettings 510, which can control the appearance or functionality of thecommunication interface overlay or the overlay element. For example, theclient can specify whether photo sharing, conversation tracking,surveys, or call deflection reporting is enabled. The applicationsettings screen 500 can include a launch button 502, which when pressedor otherwise selected can cause the computing device to finish the inputsettings process.

FIG. 6 is a depiction of a settings screen 600 displayable on thecomputing device according to one embodiment. Settings screen 600 is anextension of settings screen 500 illustrated in FIG. 5, available byscrolling downwards. Additional settings can be presented, which cancontrol the appearance or functionality of the communication interfaceoverlay. For example, the client may select various branding options 602such as button type, keyboard type, and font. The client may also uploador select a log to present in the communication interface overlay. Inanother example, the client may select colors in the branding colorssection 604 for different features of the communication interfaceoverlay.

FIG. 7 is a depiction of a settings screen 700 displayable on acomputing device according to one embodiment. Settings screen 700 is anextension of settings screen 600 illustrated in FIG. 6, available byscrolling downwards. Settings screen 700 includes the branding colorssection 604 illustrated in FIG. 6. The settings screen 700 includesadditional branding color section 704. The options provided in theadditional branding color section 704 can be selected to further controlthe appearance or functionality of the communication interface overlay.For example, the client can turn a blur option on or off, which mayobscure the underlying native application, such as by blurring, fading,or overlaying a translucent color over the graphical interface of theunderlying native application. The client may also determine a color ofthe obscured graphical interface and an amount of blurring, fading, orcolor to use for obscuring the graphical interface of the underlyingnative application. The settings screen 700 may further include a themesand branding options button 706. Selected of the themes and brandingoptions button 706 may cause the computing device to load a brandingscreen 800 illustrated in FIG. 8.

FIG. 8 illustrates a branding screen 800 displayable on the computingdevice according to one embodiment. The branding screen 800 can containbuttons and menus that can be used to make branding customizations andmake use of the customizations. The branding screen 800 can havebranding menus 804, each of which can be used to control the appearanceand functionality of different aspects of the overlay element. Forexample, a client can select the surveys option to further customize theappearance and functions of a survey that may be provided to a customerof the client. The branding screen 800 can include a save branding astheme button 806, which when pressed can cause the computing device tosave the current theme settings, branding customizations, or both as atheme, which can be exported or recalled at a later time. The brandingscreen 800 can include an email button 808, which when pressed can causethe computing device to generate an email draft containing the settings,branding customizations, or both. The email draft can be generated inthe form of a JSON file, an XML file, or any other appropriate datafile. The email draft can be sent using any suitable email applicationon the computing device. The branding screen 800 can include a restoredefault branding button 810, which when pressed can cause the computingdevice to restore the settings, branding customizations, or both todefault factory settings. The branding screen 800 can include a savebutton 802, which when selected can cause the computing device to saveany changed branding customizations and return to the applicationsettings screen 400 or 500. A cancel button 812 may also be displayed,which when selected can cause the screen to return to settings screen400 or 500.

While FIGS. 4-8 include examples of a client of a third-party serviceprovider specifying different features and functions of thecommunication interface overlay of the client's native application usingan application interface, one of ordinary skill in the art willappreciate that the client may specify features and settings for theircommunication interface overlay using other techniques. For example, theclient may create the customization overlay file by entering differentvalues in the actual customization overlay file that correspond todifferent features and functions of the communication interface overlay.As another example, the client may send a description of desiredfeatures and functions to the third-party service provider so that theservice provider can create the customization overlay file.

FIGS. 9-14 include examples of screenshot illustrations of a graphicalinterface of a native application displayed with a customizedcommunication interface overlay tab and a customized communicationinterface overlay on a computing device, such as the devices 106 or 202.

FIG. 9 illustrates an example of a screen 900 displaying a graphicalinterface 902 of a native application on a computing device according toone embodiment. The screen 900 also displays a customized communicationinterface overlay tab 904. The graphical interface 902, nativeapplication, and customized communication interface overlay tab 904 maybe similar to the graphical interface 224, native application 228, andcustomized communication interface overlay tab 304 discussed withrespect to FIG. 2. The graphical interface 902 of the native applicationand/or the customized communication interface overlay tab 904 may bepresented based on the selected graphical representations 506. Acustomer or user of the client may select the customized communicationinterface overlay tab 304, which may cause the computing device (e.g.,using the native application and/or the compiled set of code) to open acustomized communication interface overlay.

FIG. 10 illustrates the screen 900 displaying the graphical interface902 and customized communication interface overlay tab 904 along with afunction bar 1006 according to one embodiment. The function bar 1006 maybe displayed when the native application and/or compiled set of codereceives a specified input from a user. For example, a user may swipe afinger across the demonstration screen 900, which may include atouchscreen or other touch sensitive interface. Other specified inputscan be used, such as input from an accelerometer when the user shakesthe computing device. Upon receiving the specified input, the functionbar 1006 can appear. The function bar 1006 may include buttons for usingor configuring the graphical interface or communication interfaceoverlay. The function bar 1006 can include a chat button 1010, whichwhen pressed can cause the computing device (e.g., using the nativeapplication and/or the compiled set of code) to open a customizedcommunication interface overlay without the need for the user to pressthe customized communication interface overlay tab 904. In someembodiments, the function bar 1006 can include a purchase button 1012,which when pressed can cause the computing device to simulate a purchasemade from within the native application. The function bar 1006 can alsoinclude a call button 1014, which can be used to place a telephone callfrom the native application, such as to a resource or representative ofthe third-party server provider supplying the compiled set of code andthe customization overlay file. The function bar 1006 can include asettings button 1008, which when pressed can cause the computing deviceto load an application settings that allows the user to adjust certaingraphical interface or communication interface settings.

FIG. 11 is a depiction of a screen 1100 displaying a pre-chat surveywindow 1102 displayable on a computing device according to oneembodiment. In some embodiments, the pre-chat survey window 1102 may bedisplayed in response to the customer or user selecting the customizedcommunication interface overlay tab 904 or the chat button 1010. Thepre-chat survey window 1102 may be presented over a graphical interface1108 of the native application. The graphical interface 1108 of thenative application can be partially obscured, such as through blurring,fading, or overlaying a translucent color, according to the selectionmade by the client at screen 700 for example. The pre-chat survey window1102 can include a cancel button 1104, which when pressed causes thecomputing device to dismiss the pre-chat survey window 1102. Thepre-chat survey window 1102 can further include a next button 1106,which when pressed causes the computing device to present the survey tothe user. For example, the graphical interface may load a name entrywindow 1200 as a first portion of the pre-chat survey.

FIG. 12 illustrates a screen 1200 displaying a name entry window 1202 ofthe pre-chat survey on a computing device according to one embodiment.The name entry window 1202 may be presented over the graphical interface1108 of the native application. The name entry window 1202 can include aname entry box 1204. A customer or user of the client may enter (e.g.,type, select from a list, or the like) a name for identificationpurposes during the chat communication session with the third-partyresource. In some embodiments, a keyboard 1206 may be displayed for thepurposes of entering characters into the name entry box 1204. The nameentry window 1202 can include a done button 1206, which when selectedcan cause the computing device to load a communication interfaceoverlay.

One of ordinary skill in the art will appreciate that, while only thename entry window 1202 portion of the pre-chat survey is shown, othersurvey questions may be presented to the user. For example, otherpre-chat survey questions that may be presented to the user may includelocation, age, gender, or any other information that may assist thethird-party resource in helping the user.

FIG. 13 is a depiction of a screen 1300 displaying a communicationinterface overlay 1302 displayable on a computing device according toone embodiment. Upon loading the communication interface overlay 1302,the computing device can either establish a new chat connection orcontinue an already existing chat connection. The communicationinterface overlay 1302 can enable a user to interact with a resource ofthe third-party service provider, such as an agent, through a live chatcommunication session. As illustrated, the communication interfaceoverlay 1302 may be presented over the graphical interface 1108 of thenative application. In some embodiments, the communication interfaceoverlay 1302 may displayed next to or near the graphical interface 1108.The graphical interface 1108 of the native application can be obscured,as described above. The communication interface overlay 1302 can includea message bubble 1304 with information relating to the live chat, suchas messages received by the computing device from the third-partyresource, messages sent to the third-party resource from the computingdevice, or other information. The communication interface overlay 1302can further include a message box 1306. A user or customer of the clientmay draft a message to be sent to the third-party resource, for example,by entering text, a photo, a video, or other information into themessage box 1306. The communication interface overlay 1302 furtherincludes a send button 1310, which when selected can cause the computingdevice to transmit any message typed into the message box 1306. Akeyboard 1312 may be presented to allow a user to enter characters ortext into the message box 1306. In some embodiments, the communicationinterface overlay 1302 may include a hide chat button (not shown), whichwhen selected causes the native application or compiled set of code todismiss the communication interface overlay 1302 without terminating thechat communication connection, thus allowing the user to resume the chatconnection at a later time.

FIG. 14 illustrates a screen 1400 displaying a communication interfaceoverlay 1402 displayable on a computing device according to oneembodiment. In addition to the various elements described above withreference to demonstration screen 1300, demonstration screen 1400further includes a function panel 1414. The function panel 1414 can beopened or otherwise appear in response to a suitable input by a user.For example, a user may swipe up on a touchscreen of the computingdevice from the bottom of the touchscreen. The function panel 1414 caninclude several selectable options, each of which may cause thecomputing device to perform additional functions. One example of anadditional function may include the ability to take a photo and includeit in a message in the chat communication session. Another example of anadditional function may include the ability to choose an existing photostored on the computing device and include the existing photo in amessage in the chat communication session. Other examples of additionalfunctions may include the ability to generate an email transcript of thechat, the ability to hide the chat (e.g., dismiss the communicationinterface overlay 1402 without terminating the chat connection), theability to end the session (e.g., dismiss the communication interfaceoverlay 1402 and terminate the chat connection), and the ability to pullup the keyboard. The function panel 1414 may be hidden when the keyboardis displayed.

FIG. 15 illustrates an embodiment of a process 1500 for customizing acommunication interface overlay. In some aspects, the process 1500 maybe performed by a computing device, such as computing device 106 or 202.The computing device may include a mobile device, a mobile telephone, asmartphone, a desktop computer, a laptop computer, a tablet computer, awearable electronic device, or any other suitable computing device.

Process 1500 is illustrated as a logical flow diagram, the operation ofwhich represent a sequence of operations that can be implemented inhardware, computer instructions, or a combination thereof. In thecontext of computer instructions, the operations representcomputer-executable instructions stored on one or more computer-readablestorage media that, when executed by one or more processors, perform therecited operations. Generally, computer-executable instructions includeroutines, programs, objects, components, data structures, and the likethat perform particular functions or implement particular data types.The order in which the operations are described is not intended to beconstrued as a limitation, and any number of the described operationscan be combined in any order and/or in parallel to implement theprocesses.

Additionally, the process 1500 may be performed under the control of oneor more computer systems configured with executable instructions and maybe implemented as code (e.g., executable instructions, one or morecomputer programs, or one or more applications) executing collectivelyon one or more processors, by hardware, or combinations thereof. Asnoted above, the code may be stored on a machine-readable storagemedium, for example, in the form of a computer program comprising aplurality of instructions executable by one or more processors. Themachine-readable storage medium may be non-transitory.

At 1502, the process 1500 includes receiving, on a computing device, acustomization file. The customization file includes customized contentfor customizing a communication interface overlay. In some examples, thecustomization file may include a JSON file, XML file, YAML file, orother appropriate type of data file. In some embodiments, thecustomization file may be received from a third-party server. Forexample, using FIG. 1 as an illustrative example, the third-party server108 may transmit a customization file to the device 106.

At 1504, the process 1500 includes accessing native application code. At1506, the process 1500 includes executing the native application code torun a native application. In some examples, the native applicationincludes a mobile application (e.g., mobile application 130), and thenative application code may be included as part of the mobileapplication. The native application code may be specifically written forthe particular mobile application and may be specific to the platform oroperating system of the computing device. In some examples, the nativeapplication may include one or more webpages (e.g., webpage 112), andthe native application code may be included as part of the one or morewebpages.

At 1508, the process 1500 includes accessing a compiled set of code,wherein the compiled set of code is separate from the native applicationcode, and wherein the compiled set of code is accessible by the nativeapplication code. In one example, a compiled set of code may include astand-alone library. For example, a stand-alone library can be accessedand used by other programs being executed by the computing device. Thelibrary code can be organized so that it can be used by differentprograms that have no connection to each other, whereas code that ispart of a program is organized to be used within that one program. Thenative application code may access the compiled set of code to implementa graphical interface. For example, the compiled set of code may beinserted or incorporated into the native application code. The nativeapplication may launch and close the compiled set of code as needed, andmay send and receive commands to and from the compiled set of code.

At 1510, the process 1500 includes executing the compiled set of code.The compiled set of code includes a default file. The default file ofthe compiled set of code, when executed, provides a native communicationinterface overlay that is overlaid over a graphical interface of thenative application. The native communication interface overlay allowscommunication with a resource of a third-party. The resource of thethird-party includes particular information about a subject. Forexample, the resource may include a technical support person, salessupport person, an automated system, or other type of customer supportresource. In some embodiments, the customized communication interfaceoverlay includes an interactive chat window as illustrated, for example,in FIG. 13. As discussed with respect to FIG. 1, the communicationinterface overlay may facilitate communication between the third-partyresource and a customer of a client of the third-party. In such anexample, the third-party service provider may provide customer supportresources (e.g., technical support person, sales support person, orother type of customer support resource) to customers of the client. Theresource may communicate with the customer using an information resourcereceiver (e.g., information resource receiver 110).

At 1512, the process 1500 includes executing the received customizationfile, wherein executing the received customization file customizes thecompiled set of code. The customized compiled set of code customizes thenative communication interface overlay to provide a customizedcommunication interface overlay.

In some embodiments, the process 1500 may include accessing the defaultfile, wherein the default file is included in the compiled set of code,determining whether the received customization file is different thanthe default file, and replacing the default file with the receivedcustomization file when the received customization file is differentthan the default file. Using FIG. 1 as an illustrative example, thedevice 106, upon receiving the customization file, may access thedefault file that is included in the compiled set of code 134. Thedevice 106 may determine whether the received customization file isdifferent than the default file in order to decide whether to replacethe default file with the customization file. In some embodiments, thedevice 106 may have previously received another customization file. Insuch embodiments, the device 106 may determine whether the most recentlyreceived customization file is different than the previously receivedcustomization file. In the event the device 106 determines that thecustomization file is different than the default file or previouslyreceived customization file, the device 106 may replace the default fileor previously received customization file with the receivedcustomization file.

In some embodiments, the compiled set of code is accessed and executedand the customization file is executed when the native application codeis provided by a particular client and the compiled set of code and thecustomization file are provided by the third-party. For example, thecompiled set of code may be provided or developed by a third-partyservice provider, and the native application code may be provided ordeveloped by a client of the third-party service provider. In somecases, the third-party service provider may provide customer service,technical support, sales support, or other third-party services to theclient. The compiled set of code provided by the third-party serviceprovider may provide the third-party services to the native applicationprovided by the client. The third-party service provider may maintainone or more servers (e.g., third-party server 108) that provide thecompiled set of code to the computing device. In such embodiments, thecustomized communication interface overlay facilitates communicationbetween a customer of a particular client and the resource of thethird-party.

As previously described, certain aspects and features of the presentdisclosure relate to deflecting certain types of communications. Forexample, the client of the third-party service provider may desire thatmore of their customers utilize a chat communication (e.g., using thecommunication interface overlay described above) rather than a telephonecommunication to receive help relating to the client's application orproducts. In some examples as described with respect to FIGS. 16-20,interactions with a graphical interface of a native application may bedetected along with a configuration state of the graphical interfacewhen the interactions are made. One or more metrics may be gathered andanalyzed to determine communications traffic patterns that areattributable to different configurations of the graphical interface.

FIG. 16 is a block diagram of an environment 1600 according to oneembodiment. The environment 1600 includes a device 1602. The device 1602may include a computing device, such as a mobile device, a desktopcomputer, a laptop computer, a tablet device, a wearable electronicdevice, or any other suitable computing device. The device 1602 mayexecute native application code to run a native application (not shown).In some embodiments, the native application may include a mobileapplication. The mobile application may be received or downloaded from amobile application store, and may be stored on and executed by thedevice 1602. In some embodiments, the native application may include oneor more webpages. The device 1602 may include a web browser (e.g.,Microsoft Explorer™, Firefox™, Google Chrome™, or other suitable webbrowser) that can execute a hyper-text markup language (HTML) file torun the webpage and display content of the webpage. The webpage may bereceived or downloaded from a web server.

The native application may include a graphical interface 1604 that canbe displayed on the device 1602. In one example, the graphical interface1604 may be displayed upon execution of a compiled set of code (e.g.,the compiled set of code 134). In another example, the graphicalinterface 1604 may be displayed upon execution of the native applicationcode. The compiled set of code or the native application code mayprovide communication deflection analysis and reporting. In embodimentsin which the communication deflection capabilities are included in thecompiled set of code, the compiled set of code may be provided ordeveloped by a third-party service provider, and the native applicationmay be provided or developed by a client of the third-party serviceprovider. The compiled set of code provided by the third-party serviceprovider may provide the third-party services to the native applicationof the client. Regardless of whether the communication deflectioncapabilities are included in the compiled set of code or the nativeapplication code, the third-party service provider may provide customerservice, technical support, sales support, or other third-party servicesto a client of the third-party service provider. The third-party serviceprovider may maintain one or more servers, such as a third-party server1618. The third-party server 1618 is in communication with the device1602 using connection 1612. Connection 1612 may include a wired orwireless connection.

The native application may further include a help window 1606. The helpwindow 1606 may be displayed as part of the graphical interface 1604.For example, the help window 1606 may include a new application windowor page that pops up when selected, an overlay, or other displayedwindow. The help window 1606 may be displayed in response to a userselecting a help icon displayed on or with the graphical interface(e.g., a help icon displayed as part of the graphical interface, a helpicon displayed as part of a communication interface overlay, or thelike).

The help window 1606 includes a call now option 1608 and a chat nowoption 1610. The call now option 1608 includes a selectable phonecommunication link that a user may select to facilitate a telephonecommunication with a live resource. The live resource may conduct thetelephone communication with the user over connection 1616 using theinformation resource telephone receiver 1622. The information resourcetelephone receiver 1622 may include a land-line or Internet Protocoltelephone, a mobile phone, a smartphone, a desktop or laptop computerwith voice connection capabilities, or the like. The chat now option1610 includes a selectable chat link that a user may select tofacilitate a chat communication with a live chat resource. The liveresource and the live chat resource may include a person or computerthat includes particular information about a subject corresponding tothe native application. For example, the live resource may include aperson that is knowledgeable about a particular product, a person thatcan provide technical support about the native application, or any otherperson with knowledge relating to products or services presented orprovided by the native application. In some embodiments, a provider ofthe live chat resource is different from a provider of the nativeapplication. For example, the live chat resource may be an employee ofthe third-party service provider and the native application may beprovided by the client of the third-party service provider. In someembodiments, the provider of the live chat resource is the same as theprovider of the native application.

The live chat resource may conduct the chat communication with the userover connection 1614 using the information resource chat receiver 1620.The information resource chat receiver 1620 may include a desktopcomputer, a laptop computer, a tablet computer, a smartphone, or thelike. Connections 1612, 1614, and 1616 may be wired or wirelessconnections using a wired network (e.g., fiber, ethernet, powerlineethernet, ethernet over coaxial cable, digital signal line (DSL), or thelike), wireless network (e.g., Zigbee™, Bluetooth™, WiFi™, IR, UWB,WiFi-Direct, BLE, cellular, Long-Term Evolution (LTE), WiMax™, or thelike), or a combination of a wired and a wireless network.

FIG. 17 is a block diagram of an environment 1700 according to oneembodiment. The environment 1700 includes a device 1702. The device 1702may be similar to the device 1602. For example, the device 1702 mayexecute native application code to run a native application (not shown).A graphical interface 1704 may be displayed upon execution of the nativeapplication or a compiled set of code provided by third-party server1718 over connection 1712. A help window 1706 may be displayed uponexecution of the native application or the compiled set of code. Similarto the help window 1606 displayed in FIG. 6, the help window 1706includes a call now option 1708 and a chat now option 1710. The call nowoption 1708 includes a selectable phone communication link that a usermay select to facilitate a telephone communication with a live resource.The live resource may conduct the telephone communication with the userover connection 1716 using the information resource telephone receiver1722. The information resource telephone receiver 1722 may include aland-line or Internet Protocol telephone, a mobile phone, a smartphone,a desktop or laptop computer with voice connection capabilities, or thelike. The chat now option 1710 includes a selectable chat link that auser may select to facilitate a chat communication with a live chatresource. The live chat resource may conduct the chat communication withthe user over connection 1714 using the information resource chatreceiver 1720. The information resource chat receiver 1720 may include adesktop computer, a laptop computer, a tablet computer, a smartphone, orthe like. Connections 1712, 1714, and 1716 may be wired or wirelessconnections using a wired network, wireless network, or a combination ofa wired and a wireless network.

FIG. 18 is a block diagram of an environment 1800 according to oneembodiment. The environment 1800 includes a device 1802 that may besimilar to devices 1602 and 1702. A native application may be displayedupon execution of native application code, and a graphical interface1804 may be displayed upon execution of the native application code or acompiled set of code provided by third-party server 1818 over connection1812. A help window 1806 may be displayed upon execution of the nativeapplication or the compiled set of code. The help window 1806 includesonly a call now option 1808, and does not include a chat option. Thecall now option 1808 includes a selectable phone communication link thata user may select to facilitate a telephone communication with a liveresource. The live resource may conduct the telephone communication withthe user over connection 1816 using the information resource telephonereceiver 1822.

FIG. 19 is a block diagram of an environment 1900 according to oneembodiment. The environment 1900 includes a device 1902 that may besimilar to devices 1602, 1702, and 1802. A native application may bedisplayed upon execution of native application code. A graphicalinterface 1904 may be displayed upon execution of the native applicationcode or a compiled set of code provided by third-party server 1918 overconnection 1912. A help window 1906 may be displayed upon execution ofthe native application or the compiled set of code. Similar to the helpwindow 1806, the help window 1906 includes only a call now option 1908,but does not include a chat option. The call now option 1908 includes aselectable phone communication link that a user may select to facilitatea telephone communication with a live resource. The live resource mayconduct the telephone communication with the user over connection 1916using the information resource telephone receiver 1922.

While specific configurations of graphical interfaces are shown in FIGS.16-19, one of ordinary skill in the art will appreciate that thegraphical interfaces 1604, 1704, 1804, 1904 may be displayed withdifferent configurations, such as with both a call now option and a chatnow option, only a call now option, only a chat now option, or nocommunication options. In some embodiments, the different configurationsmay be a result of help services provided by a third-party serviceprovider that provides services to a client, a client of the third-partyservice provider that provides the native application to its users orcustomers, or any other company providing help services. In someembodiments, the different configurations may result from a user'soperation of the device. For example, a user may scroll to a particularpart of a web page or application page that displays all or only aportion of help options. Using FIG. 18 as an example, a user may scrollto the top of an application page to the point that only the call nowoption 1808 is shown on the screen. Users may interact with thegraphical interfaces 1606, 1706, 1806, 1906 differently depending on theconfiguration of the graphical interface. For example, a user may selecta call now option if that is the only available option for obtaininghelp with a particular problem (e.g., technical support, sales support,general questions about a product or service, or the like). In anotherexample, many users may select a chat now option in the event both achat now option and a call now option are available for selection. Insome instances, a client of a third-party service provider may want moreof their customers to select a chat now option rather than a call nowoption. For example, the client may want fewer customers placing callsinto the client's call center, and may prefer that the client utilizechat communications with the client's information resources or thethird-party service provider's information resources. Accordingly, thedevices 1602, 1702, 1802, 1902 and the third-party service provider mayprovide call deflection services by gathering and analyzing one or moremetrics to determine communications traffic patterns that areattributable to different configurations of the graphical interfaces andhelp windows.

The devices 1602 and 1702, by executing the respective nativeapplication and/or the compiled set of code, may monitor userinteractions with the help windows 1606, 1706, 1806, 1906 of therespective graphical interfaces, along with a configuration state of thehelp windows 1606, 1706, 1806, 1906 when the interactions are made.Using FIG. 16 as an example, a user may select a help icon (not shown)from the graphical interface 1604. In response to selection of the helpicon, the help window 1606 may be displayed showing both the call nowoption 1608 and the chat now option 1610. The user may select the callnow option 1608, which facilitates communication with a live resource ofthe third-party service provider using connection 1616. The device 1602(e.g., using the native application or the compiled set of code) mayreceive input indicating that a telephone call has been placed from thenative application. For example, a signal may be triggered uponselection of the call now option 1608. As another example, it may bedetermined that the call now option 1608 was used to place the telephonecall based on the placement of the telephone call occurring from thenative application. In this example, it may be determined that becausethe user was using the native application at the time of the call, thecall was placed using the call now option 1608.

The device 1602 (e.g., using the native application or the compiled setof code) may then determine a state of a chat now option when the callnow option 1608 is selected. For example, a state of the chat now optionmay include present in a graphical interface or not present in thegraphical interface at the time at which the call now option 1610 isselected. Other states may also be included, such as present and active,present and not active, or the like. In some examples, a state mayinclude a size, a color, a shape, or other feature of the chat nowoptions. As illustrated in FIG. 16, the chat now option 1610 isdisplayed along with the call now option 1608. Accordingly, the device1602 may determine that the state of the chat now option 1610 is presentin the graphical interface 1604. The device 1602 (e.g., using the nativeapplication or the compiled set of code) may then report to thethird-party server 1618 that the telephone call was placed using thecall now option 1608, and that the state of the chat now option 1610 waspresent when the call now option 1608 was selected. Accordingly, thedevice 1602 may report to the third-party server 1618 that a call wasplaced by the user while within the native application and while thechat now option 1608 was available and displayed. In some embodiments,the device 1602 may also report a length of the call between the userand the live resource. The length of the call may be used to determinestatistics relating to an amount of time live resources spend on thephone with customers.

In a different example, a user may select the chat now option 1610instead of the call now option 1608. For example, the device 1602 mayreceive input indicating that the chat now option 1610 was selected tofacilitate a chat communication from the native application. The device1602 may determine that the chat now option 1610 was selected to placethe chat communication in a similar manner in which selection of thecall now option 1608 was detected, as previously described. The device1602 may then report to the third-party server 1618 that the chatcommunication was placed using the chat now option 1610, and that astate of the call now option 1608 was present or active.

The devices 1602, 1702, 1802, 1902 may report other selections ofinterface options (e.g., call now option, chat now option, or any otherappropriate option) and a configuration of the graphical interface asthe options are selected. For example, upon receiving user selection ofthe call now option 1808, the device 1802 may report that a telephonecommunication was placed using the call now option 1808 and that a chatnow option was not present or active when the call now option 1808 wasselected.

As the information regarding option selections and graphical interfaceconfigurations are gathered by the devices 1602, 1702, 1802, 1902, thedevices themselves or the third-party servers 1618, 1718, 1818, 1918 maydetermine call deflection analytics or statistics related to theselections and configurations. In some examples, devices or thethird-party servers may determine a percentage of call deflections thatresult from the chat now option. For example, the percentage of calldeflections may be determined by calculating a first percentage ofselections of call now options when a chat now option is present andactive, and calculating a second percentage of selections of the callnow options when a chat now option is not present or not active. In oneexample, it may be determined that the chat now option is available 50%of the time when a user is in the native application. It may also bedetermined that when the chat now option is shown, 40% of the peopleclick the call now option, and when the chat now option is not shown,80% of the people click the call now option. Based on thesedeterminations, the devices or third-party servers may determine thathalf of the telephone calls are being deflected by showing the chat nowoption. As a result, half as many calls are placed to the client's callcenters by including a chat now option in their graphical interface.

In some embodiments, the call deflection analytics determinations may bemade by the devices 1602, 1702, 1802, 1902 themselves. The devices 1602,1702, 1802, 1902 may then transmit the analytics to the respectivethird-party servers. In some embodiments, the third-party servers 1618,1718, 1818, 1918 may receive the option selections and graphicalinterface configurations (e.g., chat option state information), and maydetermine the call deflection analytics based on the information.

The devices 1602, 1702, 1802, 1902, using the native application and/orthe compiled set of code, may report further information to therespective third-party servers that may be used to provide informationto the client. For example, a number of visits to the native applicationmay be reported. In another example, a number of hot leads may bereported, which include users that should be shown a chat or otherbutton if there are agents available. A user may be determined to be ahot lead based on various factors, such as users that sign up forparticular products or services, users that frequently use a chat helpoption, users that buy a certain amount of products or services, or anyother suitable factors. In another example, a number of users that areshown a button, or button shows, may be reported. In another example, anumber of users who selected a button to open up the graphical interfaceof the native application may be reported. In another example, a numberof users who send a chat message and/or receive a chat message may bereported.

The third-party service provider may then provide the call deflectionanalytics and information to the client. Based on the call deflectionanalytics and information, the client can determine that certainconfigurations and layouts of the graphical interface are more valuablethan others. For example, the client may decide that it is worth payingfor a chat service provided by the third-party service provider in orderlower the amount of calls made to the client's call centers. In anotherexample, the client may determine that a chat now option should beplaced in more locations in the graphical interface, such as anylocation at which there is a phone number or a call now option displayedin the graphical interface. In another example, the client may determinethat a chat now option should be displayed larger or in a differentcolor than is currently used. In another example, the client maydetermine that more live agents need to be added. One of ordinary skillin the art will appreciate that the call deflection analytics may beused for other suitable purposes.

The call deflection information gathering and analytics determinationsmay be performed automatically without any user interaction. Forexample, the compiled set of code may be installed on the devices 1602,1702, 1802, 1902, and may be accessed by the native application tocollect and report the option selections and graphical interfaceconfigurations, and to optionally determine the call deflectionanalytics.

FIG. 20 illustrates an embodiment of a process 2000 for customizing acommunication interface overlay. In some aspects, the process 2000 maybe performed by a computing device, such as computing device 1602, 1702,1802, or 1902. The computing device may include a mobile device, amobile telephone, a smartphone, a tablet computer, a wearable electronicdevice, or any other suitable computing device.

Process 2000 is illustrated as a logical flow diagram, the operation ofwhich represent a sequence of operations that can be implemented inhardware, computer instructions, or a combination thereof. In thecontext of computer instructions, the operations representcomputer-executable instructions stored on one or more computer-readablestorage media that, when executed by one or more processors, perform therecited operations. Generally, computer-executable instructions includeroutines, programs, objects, components, data structures, and the likethat perform particular functions or implement particular data types.The order in which the operations are described is not intended to beconstrued as a limitation, and any number of the described operationscan be combined in any order and/or in parallel to implement theprocesses.

Additionally, the process 2000 may be performed under the control of oneor more computer systems configured with executable instructions and maybe implemented as code (e.g., executable instructions, one or morecomputer programs, or one or more applications) executing collectivelyon one or more processors, by hardware, or combinations thereof. Asnoted above, the code may be stored on a machine-readable storagemedium, for example, in the form of a computer program comprising aplurality of instructions executable by one or more processors. Themachine-readable storage medium may be non-transitory.

At 2002, the process 2000 includes displaying, using a computing device,a graphical interface corresponding to a mobile application. Thegraphical interface includes a selectable phone communication link or aselectable chat link. Selection of the selectable phone communicationlink facilitates a telephone communication with a live resource, andselection of the selectable chat link facilitates a chat communicationwith a live chat resource. The live chat resource includes particularinformation about a subject corresponding to the mobile application. Insome embodiments, a provider of the live chat resource and/or the liveresource is different from a provider of the mobile application. Forexample, the live chat resource or the live resource may be an employeeof a third-party service provider, and the mobile application may beprovided by a client of the third-party service provider. In someembodiments, the provider of the live chat resource and/or the liveresource is the same as the provider of the native application. UsingFIG. 16 as an illustrative example, the graphical interface includesgraphical interface 1604 with help window 1606, the selectable phonecommunication link includes call now option 1608, and the selectablechat link includes chat now option 1610. One of ordinary skill in theart will appreciate that the graphical interface may include otherconfigurations, including those illustrated in FIGS. 17-19 or otherconfigurations.

At 2004, the process 2000 includes receiving input corresponding to anindication of placement of a telephone call from the application,wherein the selectable phone communication link is used to place thetelephone call. Using FIG. 16 again as an example, the device 1602 mayreceive input corresponding to selection of the call now option 1608(e.g., from a user of the device 1602). Selection of the call now option1608 facilitates communication between the device 1602 and a liveresource of the third-party service provider. The device 1602 mayreceive input indicating that a telephone call has been placed from thenative application. In one example, a signal may be triggered uponselection of the call now option 1608. In another example, it may bedetermined that the call now option 1608 was used to place the telephonecall based on the placement of the telephone call occurring from thenative application. In this example, it may be determined that becausethe user was using the native application at the time of the call, thecall was placed using the call now option 1608.

At 2006, the process 2000 includes determining a state of the selectablechat link when the selectable phone communication link was used to placethe telephone call from the mobile application. In some embodiments, thestate of the selectable chat link includes being present in thegraphical interface or not being present in the graphical interface atthe time at which the selectable phone communication link is selected.Other states may also be included, such as present and active, presentand not active, a size, a color, a shape, a combination thereof, or anyother suitable state or feature of the selectable chat link. Again usingFIG. 16 as an illustrative example, the chat now option 1610 isdisplayed along with the call now option 1608 when the call now option1608 is selected. The device 1602 (e.g., using the mobile application,other program, or the like) may determine that the state of the chat nowoption 1610 is present or present and active in the graphical interface1604.

At 2008, the process 2000 includes reporting a communication, whereinthe communication includes data indicating placement of the telephonecall and the state of the selectable chat link when the selectable phonecommunication link was selected. Using FIG. 16 as an illustrativeexample, the device 1602 (e.g., using the mobile application, otherprogram, or the like) may report to the third-party server 1618 that thetelephone call was placed using the call now option 1608, and that thestate of the chat now option 1610 was present or present and active whenthe call now option 1608 was selected. The communication indicates thata call was placed while within the mobile application and while theselectable chat option was present in the graphical interface.

In some embodiments, the process 2000 may include reporting a length ofthe telephone call with the live resource. For example, the length ofthe call may be used to determine statistics relating to an amount oftime live resources spend on the phone with customers.

In some embodiments, the process 2000 may include receiving inputcorresponding to an indication of placement of a chat communication fromthe application, determining that the selectable chat link was selectedto place the chat communication, and reporting a second communication,wherein the second communication includes data indicating placement ofthe chat communication. Referring to FIG. 16 as an illustrative example,the device 1602 may receive input corresponding to selection of the chatnow option 1610 instead of the call now option 1608. For example, thedevice 1602 may receive input indicating that the chat now option 1610was selected to facilitate a chat communication from the nativeapplication. The device 1602 may determine that the chat now option 1610was selected to place the chat communication in a similar manner inwhich selection of the call now option 1608 was detected, as previouslydescribed. The device 1602 may then report to the third-party server1618 that the chat communication was placed using the chat now option1610, and that a state of the call now option 1608 was present and/oractive.

In some embodiments, the process 2000 may include determining apercentage of call deflections as a result of the selectable chat link.The percentage of call deflections is determined based on a firstpercentage of selections of selectable phone communication links whenthe selectable chat link is in a first state, and a second percentage ofselections of the selectable phone communication links when theselectable chat link is in a second state. For example, the percentageof call deflections may be determined by calculating a first percentageof selections of selectable phone communication links when a selectablechat link is present and/or active, and calculating a second percentageof selections of the selectable phone communication links when aselectable chat link is not present or is not active. In oneillustrative example, it may be determined that the selectable chat linkis available 50% of the time when the mobile application is beingexecuted by the computing device. It may also be determined that whenthe selectable chat link is shown, 40% of people click a selectablephone communication link, and when the selectable chat link is notshown, 80% of people click a selectable phone communication link. Usingthese statistics, it may be determined that half of the telephone callsare deflected by showing a selectable chat link option.

FIG. 21 illustrates an example of a computing device 2100 (e.g.,computing device) according to one embodiment. The computing device 2100may include any human-to-machine interface with network connection. Thecomputing device 2100 can have capability that allows accessing of awebpage. For example, the computing device 2100 may include a cellulartelephone, a smartphone, a desktop computer, a laptop computer, atablet, a personal digital assistant (PDA), or any other suitabledevice. The computing device 2100 can include hardware elements that canbe electrically coupled using a bus 2118 (or may otherwise be incommunication, as appropriate). In one embodiment, the bus 2118 can beused for the processor(s) 2102 to communicate between cores and/or withthe memory 2112. The hardware elements may include one or moreprocessors 2102, including without limitation one or moregeneral-purpose processors and/or one or more special-purpose processors(such as digital signal processing chips, graphics accelerationprocessors, and/or the like); one or more input devices 2116, which caninclude without limitation a camera, a mouse, a keyboard, a touchsensitive screen, a touch pad, a keypad, and/or the like; and one ormore output devices 2114, which can include, without limitation, adisplay, a printer, and/or the like.

The computing device 2100 may include one or more network transceivers2106 connected to the bus 2118. The network transceiver 2106 may beoperable to send and/or receive signals across a network connection,such as to and/or from a cloud or the Internet.

The computing device 2100 may further include (and/or be incommunication with) one or more non-transitory machine-readable storagemediums or storage devices (e.g., memory 2112), which can comprise,without limitation, local and/or network accessible storage, and/or caninclude, without limitation, a disk drive, a drive array, an opticalstorage device, a solid-state storage device such as a random accessmemory (“RAM”) and/or a read-only memory (“ROM”), which can beprogrammable, flash-updateable and/or the like. Such storage devices maybe configured to implement any appropriate data storage, includingwithout limitation, various file systems, database structures, and/orthe like.

In various embodiments, functions may be stored as one or morecomputer-program products, such as instructions or code, in memory 2112,such as RAM, ROM, FLASH, or disc drive, and executed by processor(s)2102. The computing device 2100 can also comprise software elements(e.g., located within the memory 2112), including, for example, anoperating system, device drivers, executable libraries, and/or othercode, such as one or more application programs, which may comprisecomputer programs implementing various functions. Such functions or codemay include code to perform the steps described above with respect toFIGS. 1-4 and FIGS. 7-8. Memory 2112 may be a non-transitorymachine-readable storage medium, processor-readable memory, and/or acomputer-readable memory that stores the one or more computer-programproducts configured to cause the processor(s) 2102 to perform thevarious functions. In other embodiments, the various functions describedmay be performed in hardware.

FIG. 22 illustrates an example of a server 2200, such as a web server oran app server, according to one embodiment. An application store canalso be a server 2200. The server 2200 can include hardware elementsthat can be electrically coupled using a bus 2216 (or may otherwise bein communication, as appropriate). In one embodiment, the bus 2216 canbe used for the processor(s) 2202 to communicate between cores and/orwith the memory 2212. The hardware elements may include one or moreprocessors 2202, including without limitation one or moregeneral-purpose processors and/or one or more special-purpose processors(such as digital signal processing chips, graphics accelerationprocessors, and/or the like), memory 2212, a bus 2216, and a networktransceiver 2214. The network interface 2214 can enable communicationwith a network (e.g., a cloud or the Internet).

The server 2200 may further include (and/or be in communication with)one or more non-transitory machine-readable storage mediums or storagedevices (e.g., memory 2212), which can comprise, without limitation,local and/or network accessible storage, and/or can include, withoutlimitation, a disk drive, a drive array, an optical storage device, asolid-state storage device such as a random access memory (“RAM”) and/ora read-only memory (“ROM”), which can be programmable, flash-updateableand/or the like. Such storage devices may be configured to implement anyappropriate data storage, including without limitation, various filesystems, database structures, and/or the like.

In various embodiments, functions may be stored as one or more one ormore computer-program products, such as instructions or code, in memory2212. The server 2200 can also comprise software elements (e.g., locatedwithin the memory), including, for example, an operating system, devicedrivers, executable libraries, and/or other code, such as one or moreapplication programs, which may comprise computer programs implementingthe functions provided by various embodiments, and/or may be designed toimplement methods and/or configure systems, as described herein. Merelyby way of example, one or more procedures described with respect to theprocesses discussed above may be implemented as code and/or instructionsexecutable by a computer (and/or a processor within a computer); in anaspect, then, such code and/or instructions can be used to configureand/or adapt a general purpose computer (or other device) to perform oneor more operations in accordance with the described methods. Suchfunctions or code may include code to perform the steps described abovewith respect to FIGS. 1-4 and FIGS. 7-8. The memory 2212 may be anon-transitory machine-readable storage medium, processor-readablememory, and/or a computer-readable memory that stores the one or morecomputer-program products configured to cause the processor(s) 2202 toperform the functions described. In other embodiments, one or more ofthe functions described may be performed in hardware.

A set of these instructions and/or code might be stored on anon-transitory machine-readable storage medium, such as the memory 2212.In some cases, the storage medium might be incorporated within acomputer system. In other embodiments, the storage medium might beseparate from a computer system (e.g., a removable medium, such as acompact disc), and/or provided in an installation package, such that thestorage medium can be used to program, configure and/or adapt a generalpurpose computer with the instructions/code stored thereon. Theseinstructions of one or more computer-program products might take theform of executable code, which is executable by the server 2200 and/ormight take the form of source and/or installable code, which, uponcompilation and/or installation on the server 2200 (e.g., using any of avariety of generally available compilers, installation programs,compression/decompression utilities, etc.) then takes the form ofexecutable code.

Substantial variations may be made in accordance with specificrequirements. For example, customized hardware might also be used,and/or particular elements might be implemented in hardware, software(including portable software, such as applets, etc.), or both. Further,connection to other access or computing devices such as networkinput/output devices may be employed.

In the foregoing specification, aspects of the invention are describedwith reference to specific embodiments thereof, but those skilled in theart will recognize that the invention is not limited thereto. Variousfeatures and aspects of the above-described invention may be usedindividually or jointly. Further, embodiments can be utilized in anynumber of environments and applications beyond those described hereinwithout departing from the broader spirit and scope of thespecification. The specification and drawings are, accordingly, to beregarded as illustrative rather than restrictive.

In the foregoing description, for the purposes of illustration, methodswere described in a particular order. It should be appreciated that inalternate embodiments, the methods may be performed in a different orderthan that described. It should also be appreciated that the methodsdescribed above may be performed by hardware components or may beembodied in sequences of machine-executable instructions, which may beused to cause a machine, such as a general-purpose or special-purposeprocessor or logic circuits programmed with the instructions to performthe methods. These machine-executable instructions may be stored on oneor more machine readable mediums, such as CD-ROMs or other type ofoptical disks, floppy diskettes, ROMs, RAMs, EPROMs, EEPROMs, magneticor optical cards, flash memory, or other types of machine-readablemediums suitable for storing electronic instructions. Alternatively, themethods may be performed by a combination of hardware and software.

Where components are described as being configured to perform certainoperations, such configuration can be accomplished, for example, bydesigning electronic circuits or other hardware to perform theoperation, by programming programmable electronic circuits (e.g.,microprocessors, or other suitable electronic circuits) to perform theoperation, or any combination thereof.

While illustrative embodiments of the application have been described indetail herein, it is to be understood that the inventive concepts may beotherwise variously embodied and employed, and that the appended claimsare intended to be construed to include such variations, except aslimited by the prior art.

What is claimed is:
 1. A computer-implemented method, comprising:accessing, at a computing device, native application code associatedwith a native application; executing the native application code to runthe native application on the computing device, wherein the nativeapplication is associated with a graphical interface; accessing acompiled set of code, wherein the compiled set of code is associatedwith an overlay element, wherein the overlay element corresponds to afunction, and wherein a function is executable when the overlay elementis displayed; executing the compiled set of code, wherein executing thecompiled set of code modifies the native application code to include theoverlay element; accessing a customization file associated with theoverlay element, wherein the customization file is configured tocustomize the function corresponding to the overlay element; andexecuting the customization file, wherein executing the customizationfile customizes the function corresponding to the overlay element. 2.The computer-implemented method of claim 1, further comprising:displaying the overlay element, wherein the overlay element includes aselectable element associated with the customized function.
 3. Thecomputer-implemented method of claim 1, wherein the compiled set of codeis defined by an entity, wherein the native application code is definedby an additional entity, and wherein the entity and the additionalentity are different from each other.
 4. The computer-implemented methodof claim 3, wherein when the customized function is executed, the nativeapplication facilitates a communication session with a terminal deviceassociated with a resource.
 5. The computer-implemented method of claim1, wherein customizing the function corresponding to the overlay elementincludes modifying the overlay element by adding one or more functionsto the overlay element.
 6. The computer-implemented method of claim 1,wherein customizing the function corresponding to the overlay elementincludes modifying the overlay element by removing one or more functionsfrom the overlay element.
 7. The computer-implemented method of claim 1,further comprising: updating the customization file with a newcustomization file.
 8. A system, comprising: one or more dataprocessors; and a non-transitory computer-readable storage mediumcontaining instructions which, when executed on the one or more dataprocessors, cause the one or more data processors to perform operationsincluding: accessing native application code associated with a nativeapplication; executing the native application code to run the nativeapplication on a computing device, wherein the native application isassociated with a graphical interface; accessing a compiled set of code,wherein the compiled set of code is associated with an overlay element,wherein the overlay element corresponds to a function, and wherein afunction is executable when the overlay element is displayed; executingthe compiled set of code, wherein executing the compiled set of codemodifies the native application code to include the overlay element;accessing a customization file associated with the overlay element,wherein the customization file is configured to customize the functioncorresponding to the overlay element; and executing the customizationfile, wherein executing the customization file customizes the functioncorresponding to the overlay element.
 9. The system of claim 8, whereinthe operations further comprise: displaying the overlay element, whereinthe overlay element includes a selectable element associated with thecustomized function.
 10. The system of claim 8, wherein the compiled setof code is defined by an entity, wherein the native application code isdefined by an additional entity, and wherein the entity and theadditional entity are different from each other.
 11. The system of claim10, wherein when the customized function is executed, the nativeapplication facilitates a communication session with a terminal deviceassociated with a resource.
 12. The system of claim 8, whereincustomizing the function corresponding to the overlay element includesmodifying the overlay element by adding one or more functions to theoverlay element.
 13. The system of claim 8, wherein customizing thefunction corresponding to the overlay element includes modifying theoverlay element by removing one or more functions from the overlayelement.
 14. The system of claim 8, wherein the operations furthercomprise: updating the customization file with a new customization file.15. A computer-program product tangibly embodied in a non-transitorymachine-readable storage medium, including instructions configured tocause a data processing apparatus to perform operations including:accessing, at a computing device, native application code associatedwith a native application; executing the native application code to runthe native application on the computing device, wherein the nativeapplication is associated with a graphical interface; accessing acompiled set of code, wherein the compiled set of code is associatedwith an overlay element, wherein the overlay element corresponds to afunction, and wherein a function is executable when the overlay elementis displayed; executing the compiled set of code, wherein executing thecompiled set of code modifies the native application code to include theoverlay element; accessing a customization file associated with theoverlay element, wherein the customization file is configured tocustomize the function corresponding to the overlay element; andexecuting the customization file, wherein executing the customizationfile customizes the function corresponding to the overlay element. 16.The computer-program product of claim 15, wherein the operations furthercomprise: displaying the overlay element, wherein the overlay elementincludes a selectable element associated with the customized function.17. The computer-program product of claim 15, wherein the compiled setof code is defined by an entity, wherein the native application code isdefined by an additional entity, and wherein the entity and theadditional entity are different from each other.
 18. Thecomputer-program product of claim 17, wherein when the customizedfunction is executed, the native application facilitates a communicationsession with a terminal device associated with a resource.
 19. Thecomputer-program product of claim 15, wherein customizing the functioncorresponding to the overlay element includes modifying the overlayelement by adding one or more functions to the overlay element.
 20. Thecomputer-program product of claim 15, wherein customizing the functioncorresponding to the overlay element includes modifying the overlayelement by removing one or more functions from the overlay element.